/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package org.dusin.teachassist.servlet.lab;


import com.google.gson.Gson;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.dusin.teachassistdbservice.serviceimpl.GeneralService;
import org.dusin.teachassistdbservice.util.TheUtil;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

/**
 *
 * @author dusin
 */
@WebServlet(name = "UpdateLabDetail", urlPatterns = {"/servlet/lab/UpdateLabDetail"})
public class UpdateLabDetail extends HttpServlet {
    private GeneralService instance;

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/json;charset=UTF-8");
        PrintWriter out = response.getWriter();
        HttpSession session = request.getSession();
        String teacherNo = (String)session.getAttribute("teacherNo");
        Integer teachclassid = (Integer)session.getAttribute("teachclassid");
        int no = Integer.parseInt(request.getParameter("no"));
        String dataJson = request.getParameter("data");
        int homeworkId = Integer.parseInt(request.getParameter("homeworkId"));
        Gson gson = new Gson();
        String jsonResult=TheUtil.getJsonResult(false, "保存失败");
        Object[] data = gson.fromJson(dataJson, Object[].class);
        try {
            ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
            instance = (GeneralService) context.getBean("generalService");
            if(data.length>0){            
                List<Object[]> beans = new ArrayList<Object[]>();
                for(Object o:data){
                    Map m = (Map)o;
                    String status = (String)m.get("status");//"A-60" 截取分数部分,status表示分数
                    status = status.substring(status.indexOf("-")+1);
                    Object[] b = new Object[]{m.get("studentNo"),status,m.get("note")};
                    beans.add(b);
                }
                instance.trUpdateLabDetail(homeworkId, beans);
          
            }
            Map<String,Object> resultMap = new HashMap<>();
            resultMap.put("status", true);
            resultMap.put("msg", "保存成功");
            resultMap.put("jobId",homeworkId);
            
            jsonResult = gson.toJson(resultMap);
            
        } catch(Exception e){
            //TheUtil.getJsonResult(true, "保存失败");
            e.printStackTrace();
        }finally {
            out.printf(jsonResult);
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
